package main

import (
	"fmt"
	"strings"
)

func main() {
	//
	var line string = "ps -eL > log"
	// 简化问题，除了最后一个管道之外，其他的都不考虑重定向；
	// 则 n 个子任务拼接需要 n 个重定向；

	// step1. 处理输入命令，计算重定向次数；
	var count int
	args := strings.Fields(line)
	for _, v := range args {
		if v == "|" {
			count += 1
		}
	}
	args = append(args, "|")
	fmt.Println("count:", count)
	// 得到每个子任务
	var subArgs []([]string) = make([][]string, count+1)
	var cur int
	var k_cur int
	for k, v := range args {
		if v == "|" {
			for i := k_cur; i < k; i++ {
				subArgs[cur] = append(subArgs[cur], args[i])
			}
			cur += 1
			k_cur = k + 1
		}
	}
	// 解析参数结束
	fmt.Println(subArgs)
	var reDirect []string
	var shellArgs []string
	for _, args := range subArgs {
		for k, v := range args {
			if v == ">" {
				reDirect = args[k+1:]
				shellArgs = args[0:k]
			}
			if len(reDirect) > 1 {
				continue
			}
			// pid, _,_,_ :=
		}
	}

	// 循环的使用管道、fork、exec

}
